package com.zlb.app.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Objects;

/**
 * @Description
 * @Author zWX1367238
 * @Since 2024-08-14 15:21:15
 */
public class PageUtil {

    // 分页本地线程
    private static final ThreadLocal<Page<?>> PAGE_HOLDER = new ThreadLocal<>();

    // 设置当前页
    public static void setCurrentPage(Page<?> page) {
        PAGE_HOLDER.set(page);
    }

    // 获取本次请求中本地线程中的分页
    public static Page<?> getPage() {
        Page<?> page = PAGE_HOLDER.get();
        if (Objects.isNull(page)) {
            setCurrentPage(new Page<>());
        }
        return PAGE_HOLDER.get();
    }

    public static <T> Page<T> buildPage(Class<T> t) {
        Page<T> page = new Page<>();
        page.setCurrent(getCurrent());
        page.setSize(getSize());
        return page;
    }

    // 获取当前页
    public static Long getCurrent() {
        return getPage().getCurrent();
    }

    // 获取每页多少条
    public static Long getSize() {
        return getPage().getSize();
    }

    // 获取从第几条开始
    public static Long getLimitCurrent() {
        return (getCurrent() - 1) * getSize();
    }

    // 请求完成后清理
    public static void remove() {
        PAGE_HOLDER.remove();
    }

}
